using System;
using System.Collections;
using System.IO;
using System.Text;
using System.Web;

namespace WebMonitor.Http {
    /// <summary>
    /// Summary description for IHttpResponse.
    /// </summary>
    public interface IHttpResponse {
        void AddCacheItemDependencies(ArrayList cacheKeys);
        void AddCacheItemDependency(string cacheKey);
        void AddFileDependencies(ArrayList filenames);
        void AddFileDependency(string filename);
        void AddHeader(string name, string value);
        void AppendCookie(HttpCookie cookie);
        void AppendHeader(string name, string value);
        void AppendToLog(string param);
        string ApplyAppPathModifier(string virtualPath);
        void BinaryWrite(byte[] buffer);
        void Clear();
        void ClearContent();
        void ClearHeaders();
        void Close();
        void End();
        void Flush();
        void Pics(string value);
        void Redirect(string url);
        void Redirect(string url, bool endResponse);
        void SetCookie(HttpCookie cookie);
        void TransmitFile(string filename);
        void Write(char ch);
        void Write(object obj);
        void Write(string s);
        void Write(char[] buffer, int index, int count);
        void WriteFile(string filename);
        void WriteFile(string filename, bool readIntoMemory);
        void WriteFile(IntPtr fileHandle, long offset, long size);
        void WriteFile(string filename, long offset, long size);


        // Properties
        bool Buffer { get; set; }
        bool BufferOutput { get; set; }
        HttpCachePolicy Cache { get; }
        string CacheControl { get; set; }
        string Charset { get; set; }
        Encoding ContentEncoding { get; set; }
        string ContentType { get; set; }
        HttpCookieCollection Cookies { get; }
        int Expires { get; set; }
        DateTime ExpiresAbsolute { get; set; }
        Stream Filter { get; set; }
        bool IsClientConnected { get; }
        TextWriter Output { get; }
        Stream OutputStream { get; }
        string RedirectLocation { get; set; }
        string Status { get; set; }
        int StatusCode { get; set; }
        string StatusDescription { get; set; }
        bool SuppressContent { get; set; }
    }
}